package com.gopay.common.util;

import org.slf4j.Logger;
import org.slf4j.MDC;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;

/**
 * 日志工具类
 * 打印的类信息有误，未解决前暂停使用本工具类
 * @author <a href="mailto:yhwpeng@126.com">wangdong</a>
 * @date 2016-11-01 10:22:48
 */
@Deprecated
public class LogUtil {

//    private static final Logger perfLogger = LoggerFactory.getLogger(LogUtil.class);

    /*
        String.format()用法

        1、转换符
        %s: 字符串类型，如："ljq"
        %b: 布尔类型，如：true
        %d: 整数类型(十进制)，如：99
        %f: 浮点类型，如：99.99
        %%: 百分比类型，如：％
        %
        n: 换行符
 */

    /**
     * 记录性能日志
     * 
     * @param dumpValue
     */
//    public static void dumpPerf(String dumpValue) {
//        if (perfLogger.isInfoEnabled()) {
//            perfLogger.info(dumpValue);
//        }
//    }

    /**
     * 记录debug日志 
     */
    public static void debug(Logger logger, String msg, Object... params) {
        if (logger.isDebugEnabled()) {
            logger.debug(String.format(msg, params));
        }
    }

    /**
     * 记录debug日志 
     */
    public static void debug(Logger logger, String msg) {
        if (logger.isDebugEnabled()) {
            logger.debug(msg);
        }
    }

    /**
     * 记录info日志 
     */
    @Deprecated
    public static void info(Logger logger, String msg, Object... params) {
        if (logger.isInfoEnabled()) {
            logger.info(String.format(msg, params));
        }
    }

    /**
     * 记录info日志 
     */
    @Deprecated
    public static void info(Logger logger, String msg) {
        if (logger.isInfoEnabled()) {
            logger.info(msg);
        }
    }

    /**
     * 记录warn日志 
     */
    public static void warn(Logger logger, String msg, Object... params) {
        if (logger.isWarnEnabled()) {
            logger.warn(String.format(msg, params));
        }
    }

    /**
     * 记录warn日志 
     */
    public static void warn(Logger logger, Throwable e, String msg, Object... params) {
        if (logger.isWarnEnabled()) {
            logger.warn(String.format(msg, params), e);
        }
    }

    /**
     * 记录error日志 
     */
    @Deprecated
    public static void error(Logger logger, Throwable e, String msg, Object... params) {
        logger.error(String.format(msg, params), e);
    }

    /**
     * 记录error日志 
     */
    @Deprecated
    public static void error(Logger logger, String msg, Object... params) {
        logger.error(String.format(msg, params));
    }

    /**
     * 异常堆栈转String
     * 
     * @param throwable
     * @return
     */
    public static String getStackTrace(Throwable throwable) {
        if (throwable == null) {
            return "";
        }
        Writer sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        throwable.printStackTrace(pw);
        return sw.toString();
    }

    /**
     * 日志中打印线程号与流水号
     * @param requestId 传入的流水号
     */
    public static void getLogger(String requestId){
//		String name = ManagementFactory.getRuntimeMXBean().getName();
//		String pid = name.split("@")[0];
//		MDC.put("tid", String.valueOf(Thread.currentThread().getId()));
        MDC.put("reqid", requestId);
    }


}
